<!-- HTML header for doxygen 1.8.9.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>ROSS: core/tw-lp.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <a href="https://github.com/ROSS-org/ROSS">
   <div id="projectname">ROSS
   </div>
   </a>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_af18cf245e3394ab3b436135935cfd6e.html">core</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">tw-lp.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>tw_lp_settype is defined here!  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;<a class="el" href="ross_8h_source.html">ross.h</a>&gt;</code><br/>
</div>
<p><a href="tw-lp_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a7bd8e21f4093b87f54e5054d8a028c88"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tw-lp_8c.html#a7bd8e21f4093b87f54e5054d8a028c88">tw_lp_setup_types</a> ()</td></tr>
<tr class="separator:a7bd8e21f4093b87f54e5054d8a028c88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ba3f617dbc434273f5ba44bf3132a6b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tw-lp_8c.html#a8ba3f617dbc434273f5ba44bf3132a6b">tw_lp_settype</a> (<a class="el" href="ross_8h.html#a911515dff2fb79886a16ed44df5f9d20">tw_lpid</a> id, <a class="el" href="structtw__lptype.html">tw_lptype</a> *type)</td></tr>
<tr class="separator:a8ba3f617dbc434273f5ba44bf3132a6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adafe186da3f16dcfe74c9303bcda73d5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tw-lp_8c.html#adafe186da3f16dcfe74c9303bcda73d5">tw_lp_onpe</a> (<a class="el" href="ross_8h.html#a911515dff2fb79886a16ed44df5f9d20">tw_lpid</a> id, <a class="el" href="structtw__pe.html">tw_pe</a> *<a class="el" href="avl__tree_8c.html#ac4c639748d4d5a271d6c54a18f614605">pe</a>, <a class="el" href="ross_8h.html#a911515dff2fb79886a16ed44df5f9d20">tw_lpid</a> gid)</td></tr>
<tr class="separator:adafe186da3f16dcfe74c9303bcda73d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab779ee7648ae0cf0931fce717b4401b6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tw-lp_8c.html#ab779ee7648ae0cf0931fce717b4401b6">tw_lp_onkp</a> (<a class="el" href="structtw__lp.html">tw_lp</a> *lp, <a class="el" href="structtw__kp.html">tw_kp</a> *kp)</td></tr>
<tr class="separator:ab779ee7648ae0cf0931fce717b4401b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac66e6455900b508bb4e4e0cef4df8061"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tw-lp_8c.html#ac66e6455900b508bb4e4e0cef4df8061">tw_init_lps</a> (<a class="el" href="structtw__pe.html">tw_pe</a> *me)</td></tr>
<tr class="separator:ac66e6455900b508bb4e4e0cef4df8061"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab34bd3abe37a02c5a785eba6161d498"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tw-lp_8c.html#aab34bd3abe37a02c5a785eba6161d498">tw_pre_run_lps</a> (<a class="el" href="structtw__pe.html">tw_pe</a> *me)</td></tr>
<tr class="separator:aab34bd3abe37a02c5a785eba6161d498"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad229844ea59b6a3d9294f57bd2f99351"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tw-lp_8c.html#ad229844ea59b6a3d9294f57bd2f99351">tw_lp_suspend</a> (<a class="el" href="structtw__lp.html">tw_lp</a> *lp, int do_orig_event_rc, int error_num)</td></tr>
<tr class="separator:ad229844ea59b6a3d9294f57bd2f99351"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ac66e6455900b508bb4e4e0cef4df8061"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void tw_init_lps </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structtw__pe.html">tw_pe</a> *&#160;</td>
          <td class="paramname"><em>me</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="tw-lp_8c_source.html#l00083">83</a> of file <a class="el" href="tw-lp_8c_source.html">tw-lp.c</a>.</p>

<p>References <a class="el" href="ross-types_8h_source.html#l00384">tw_pe::abort_event</a>, <a class="el" href="ross-types_8h_source.html#l00261">tw_event::caused_by_me</a>, <a class="el" href="ross-types_8h_source.html#l00399">tw_pe::cev_abort</a>, <a class="el" href="ross-types_8h_source.html#l00385">tw_pe::cur_event</a>, <a class="el" href="ross-types_8h_source.html#l00315">tw_lp::cur_state</a>, <a class="el" href="io-mpi_8c_source.html#l00021">g_io_load_at</a>, <a class="el" href="specialized-lps_8c_source.html#l00012">g_st_analysis_nlp</a>, <a class="el" href="ross-global_8c_source.html#l00026">g_tw_lp</a>, <a class="el" href="ross-global_8c_source.html#l00023">g_tw_nlp</a>, <a class="el" href="io_8h_source.html#l00020">INIT</a>, <a class="el" href="ross-types_8h_source.html#l00088">tw_lptype::init</a>, <a class="el" href="io-mpi_8c_source.html#l00112">io_read_checkpoint()</a>, <a class="el" href="ross-types_8h_source.html#l00324">tw_lp::last_stats</a>, <a class="el" href="ross-types_8h_source.html#l00323">tw_lp::lp_stats</a>, <a class="el" href="ross-types_8h_source.html#l00308">tw_lp::pe</a>, <a class="el" href="io_8h_source.html#l00021">POST_INIT</a>, <a class="el" href="io_8h_source.html#l00019">PRE_INIT</a>, <a class="el" href="ross-types_8h_source.html#l00095">tw_lptype::state_sz</a>, <a class="el" href="ross-types_8h_source.html#l00415">tw_pe::stats</a>, <a class="el" href="tw-util_8c_source.html#l00203">tw_calloc()</a>, <a class="el" href="aarch64_8h_source.html#l00006">tw_clock_read()</a>, <a class="el" href="tw-util_8c_source.html#l00074">tw_error()</a>, <a class="el" href="ross-extern_8h_source.html#l00164">TW_LOC</a>, and <a class="el" href="ross-types_8h_source.html#l00316">tw_lp::type</a>.</p>

<p>Referenced by <a class="el" href="tw-sched_8c_source.html#l00404">tw_sched_init()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_ac66e6455900b508bb4e4e0cef4df8061_cgraph.png" border="0" usemap="#tw-lp_8c_ac66e6455900b508bb4e4e0cef4df8061_cgraph" alt=""/></div>
<map name="tw-lp_8c_ac66e6455900b508bb4e4e0cef4df8061_cgraph" id="tw-lp_8c_ac66e6455900b508bb4e4e0cef4df8061_cgraph">
<area shape="rect" id="node2" href="io-mpi_8c.html#ab5386defd555b1a62743c8b8589bf2b2" title="io_read_checkpoint" alt="" coords="139,131,274,157"/><area shape="rect" id="node4" href="ross-extern_8h.html#a49ed2388aaae26e43280b7909c834aaa" title="tw_error" alt="" coords="680,232,749,259"/><area shape="rect" id="node12" href="ross-extern_8h.html#a445b1ed30cd2e8ef1f837e782a339a70" title="tw_calloc" alt="" coords="168,333,245,360"/><area shape="rect" id="node16" href="aarch64_8h.html#a450cf25fa5291629087ca4198de55757" title="tw_clock_read" alt="" coords="153,384,260,411"/><area shape="rect" id="node3" href="io-serialize_8c.html#ad0792b7799ac27da02e522be00b25a62" title="io_event_deserialize" alt="" coords="491,55,631,81"/><area shape="rect" id="node6" href="io-serialize_8c.html#a388e9a535bb45b57911f64cab9b65394" title="io_lp_deserialize" alt="" coords="323,29,442,56"/><area shape="rect" id="node7" href="ross-extern_8h.html#a3def69f148eaba619b26c898c90687b8" title="tw_event_data" alt="" coords="329,80,436,107"/><area shape="rect" id="node8" href="tw-eventq_8h.html#aa40bc1edebb9f58d87092388cf8dc0df" title="tw_eventq_pop" alt="" coords="327,131,438,157"/><area shape="rect" id="node10" href="tw-eventq_8h.html#a5c324b9c5a53c17e78709fa7eaaa7a1f" title="tw_eventq_push" alt="" coords="324,181,441,208"/><area shape="rect" id="node11" href="network-mpi_8c.html#a2818efb70df48e5e29d3dacb3e2de009" title="tw_nnodes" alt="" coords="340,232,425,259"/><area shape="rect" id="node5" href="network-mpi_8c.html#a2e139e8547a091c4c4ea0b445fe8dd1c" title="tw_net_abort" alt="" coords="798,271,895,297"/><area shape="rect" id="node9" href="tw-eventq_8h.html#a38f6e76712a4c5a6714aafa5ce69c2ca" title="tw_eventq_debug" alt="" coords="499,181,623,208"/><area shape="rect" id="node13" href="tw-util_8c.html#a57c62eebb6371a6d0d5ea5043f12f91b" title="pool_alloc" alt="" coords="343,333,423,360"/><area shape="rect" id="node15" href="tw-util_8c.html#a653cb2b88ee27b886ba5c854d5a0ba5c" title="tw_error" alt="" coords="680,308,749,335"/><area shape="rect" id="node14" href="tw-util_8c.html#a0611e23c33bb8c31272e79d876b8bcb0" title="my_malloc" alt="" coords="519,333,604,360"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_ac66e6455900b508bb4e4e0cef4df8061_icgraph.png" border="0" usemap="#tw-lp_8c_ac66e6455900b508bb4e4e0cef4df8061_icgraph" alt=""/></div>
<map name="tw-lp_8c_ac66e6455900b508bb4e4e0cef4df8061_icgraph" id="tw-lp_8c_ac66e6455900b508bb4e4e0cef4df8061_icgraph">
<area shape="rect" id="node2" href="tw-sched_8c.html#ae7357a99fcf58867f153cb7ab920b400" title="tw_sched_init" alt="" coords="139,5,242,32"/><area shape="rect" id="node3" href="tw-setup_8c.html#a6dbc4bba03285bb1b8a8a5464f0375ea" title="tw_run" alt="" coords="291,5,352,32"/><area shape="rect" id="node4" href="phold_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title="main" alt="" coords="400,5,451,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="ab779ee7648ae0cf0931fce717b4401b6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void tw_lp_onkp </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structtw__lp.html">tw_lp</a> *&#160;</td>
          <td class="paramname"><em>lp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structtw__kp.html">tw_kp</a> *&#160;</td>
          <td class="paramname"><em>kp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="tw-lp_8c_source.html#l00073">73</a> of file <a class="el" href="tw-lp_8c_source.html">tw-lp.c</a>.</p>

<p>References <a class="el" href="ross-types_8h_source.html#l00313">tw_lp::kp</a>, <a class="el" href="ross-types_8h_source.html#l00345">tw_kp::lp_count</a>, <a class="el" href="tw-util_8c_source.html#l00074">tw_error()</a>, and <a class="el" href="ross-extern_8h_source.html#l00164">TW_LOC</a>.</p>

<p>Referenced by <a class="el" href="tw-setup_8c_source.html#l00135">map_linear()</a>, <a class="el" href="tw-setup_8c_source.html#l00189">map_round_robin()</a>, and <a class="el" href="specialized-lps_8c_source.html#l00041">specialized_lp_init_mapping()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_ab779ee7648ae0cf0931fce717b4401b6_cgraph.png" border="0" usemap="#tw-lp_8c_ab779ee7648ae0cf0931fce717b4401b6_cgraph" alt=""/></div>
<map name="tw-lp_8c_ab779ee7648ae0cf0931fce717b4401b6_cgraph" id="tw-lp_8c_ab779ee7648ae0cf0931fce717b4401b6_cgraph">
<area shape="rect" id="node2" href="ross-extern_8h.html#a49ed2388aaae26e43280b7909c834aaa" title="tw_error" alt="" coords="141,5,211,32"/><area shape="rect" id="node3" href="network-mpi_8c.html#a2e139e8547a091c4c4ea0b445fe8dd1c" title="tw_net_abort" alt="" coords="259,5,357,32"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_ab779ee7648ae0cf0931fce717b4401b6_icgraph.png" border="0" usemap="#tw-lp_8c_ab779ee7648ae0cf0931fce717b4401b6_icgraph" alt=""/></div>
<map name="tw-lp_8c_ab779ee7648ae0cf0931fce717b4401b6_icgraph" id="tw-lp_8c_ab779ee7648ae0cf0931fce717b4401b6_icgraph">
<area shape="rect" id="node2" href="tw-setup_8c.html#aec955754eb6d560d7bc1454aeaaa516f" title="map_linear" alt="" coords="163,5,248,32"/><area shape="rect" id="node5" href="tw-setup_8c.html#ab70815e9b532e3d9a85c0a3366477def" title="map_round_robin" alt="" coords="145,56,266,83"/><area shape="rect" id="node6" href="st-instrumentation_8h.html#aa3965326e96c2b9e5aba87f35ed2a896" title="specialized_lp_init\l_mapping" alt="" coords="141,107,269,149"/><area shape="rect" id="node3" href="tw-setup_8c.html#ae29dd6eba29314361ef334f6bf028210" title="tw_define_lps" alt="" coords="318,56,421,83"/><area shape="rect" id="node4" href="phold_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title="main" alt="" coords="469,56,520,83"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="adafe186da3f16dcfe74c9303bcda73d5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void tw_lp_onpe </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="ross_8h.html#a911515dff2fb79886a16ed44df5f9d20">tw_lpid</a>&#160;</td>
          <td class="paramname"><em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structtw__pe.html">tw_pe</a> *&#160;</td>
          <td class="paramname"><em>pe</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="ross_8h.html#a911515dff2fb79886a16ed44df5f9d20">tw_lpid</a>&#160;</td>
          <td class="paramname"><em>gid</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="tw-lp_8c_source.html#l00057">57</a> of file <a class="el" href="tw-lp_8c_source.html">tw-lp.c</a>.</p>

<p>References <a class="el" href="specialized-lps_8c_source.html#l00012">g_st_analysis_nlp</a>, <a class="el" href="ross-global_8c_source.html#l00026">g_tw_lp</a>, <a class="el" href="ross-global_8c_source.html#l00023">g_tw_nlp</a>, <a class="el" href="ross-types_8h_source.html#l00306">tw_lp::gid</a>, <a class="el" href="ross-types_8h_source.html#l00305">tw_lp::id</a>, <a class="el" href="avl__tree_8c_source.html#l00011">pe</a>, <a class="el" href="ross-types_8h_source.html#l00308">tw_lp::pe</a>, <a class="el" href="tw-util_8c_source.html#l00203">tw_calloc()</a>, <a class="el" href="tw-util_8c_source.html#l00074">tw_error()</a>, and <a class="el" href="ross-extern_8h_source.html#l00164">TW_LOC</a>.</p>

<p>Referenced by <a class="el" href="tw-setup_8c_source.html#l00135">map_linear()</a>, <a class="el" href="tw-setup_8c_source.html#l00189">map_round_robin()</a>, and <a class="el" href="specialized-lps_8c_source.html#l00041">specialized_lp_init_mapping()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_adafe186da3f16dcfe74c9303bcda73d5_cgraph.png" border="0" usemap="#tw-lp_8c_adafe186da3f16dcfe74c9303bcda73d5_cgraph" alt=""/></div>
<map name="tw-lp_8c_adafe186da3f16dcfe74c9303bcda73d5_cgraph" id="tw-lp_8c_adafe186da3f16dcfe74c9303bcda73d5_cgraph">
<area shape="rect" id="node2" href="ross-extern_8h.html#a445b1ed30cd2e8ef1f837e782a339a70" title="tw_calloc" alt="" coords="141,56,219,83"/><area shape="rect" id="node7" href="ross-extern_8h.html#a49ed2388aaae26e43280b7909c834aaa" title="tw_error" alt="" coords="145,107,215,133"/><area shape="rect" id="node3" href="tw-util_8c.html#a57c62eebb6371a6d0d5ea5043f12f91b" title="pool_alloc" alt="" coords="267,5,347,32"/><area shape="rect" id="node5" href="tw-util_8c.html#a653cb2b88ee27b886ba5c854d5a0ba5c" title="tw_error" alt="" coords="272,56,341,83"/><area shape="rect" id="node4" href="tw-util_8c.html#a0611e23c33bb8c31272e79d876b8bcb0" title="my_malloc" alt="" coords="401,5,487,32"/><area shape="rect" id="node6" href="network-mpi_8c.html#a2e139e8547a091c4c4ea0b445fe8dd1c" title="tw_net_abort" alt="" coords="395,81,493,108"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_adafe186da3f16dcfe74c9303bcda73d5_icgraph.png" border="0" usemap="#tw-lp_8c_adafe186da3f16dcfe74c9303bcda73d5_icgraph" alt=""/></div>
<map name="tw-lp_8c_adafe186da3f16dcfe74c9303bcda73d5_icgraph" id="tw-lp_8c_adafe186da3f16dcfe74c9303bcda73d5_icgraph">
<area shape="rect" id="node2" href="tw-setup_8c.html#aec955754eb6d560d7bc1454aeaaa516f" title="map_linear" alt="" coords="163,5,248,32"/><area shape="rect" id="node5" href="tw-setup_8c.html#ab70815e9b532e3d9a85c0a3366477def" title="map_round_robin" alt="" coords="145,56,266,83"/><area shape="rect" id="node6" href="st-instrumentation_8h.html#aa3965326e96c2b9e5aba87f35ed2a896" title="specialized_lp_init\l_mapping" alt="" coords="141,107,269,149"/><area shape="rect" id="node3" href="tw-setup_8c.html#ae29dd6eba29314361ef334f6bf028210" title="tw_define_lps" alt="" coords="318,56,421,83"/><area shape="rect" id="node4" href="phold_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title="main" alt="" coords="469,56,520,83"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a8ba3f617dbc434273f5ba44bf3132a6b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void tw_lp_settype </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="ross_8h.html#a911515dff2fb79886a16ed44df5f9d20">tw_lpid</a>&#160;</td>
          <td class="paramname"><em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structtw__lptype.html">tw_lptype</a> *&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>IMPORTANT: This function should be called after tw_define_lps. It copies the function pointers which define the LP to the appropriate location for <em>each</em> LP, i.e. you probably want to call this more than once. </p>

<p>Definition at line <a class="el" href="tw-lp_8c_source.html#l00038">38</a> of file <a class="el" href="tw-lp_8c_source.html">tw-lp.c</a>.</p>

<p>References <a class="el" href="specialized-lps_8c_source.html#l00012">g_st_analysis_nlp</a>, <a class="el" href="ross-global_8c_source.html#l00034">g_tw_delta_sz</a>, <a class="el" href="ross-global_8c_source.html#l00026">g_tw_lp</a>, <a class="el" href="ross-global_8c_source.html#l00023">g_tw_nlp</a>, <a class="el" href="ross-types_8h_source.html#l00306">tw_lp::gid</a>, <a class="el" href="ross-types_8h_source.html#l00308">tw_lp::pe</a>, <a class="el" href="ross-types_8h_source.html#l00095">tw_lptype::state_sz</a>, <a class="el" href="tw-util_8c_source.html#l00074">tw_error()</a>, <a class="el" href="ross-extern_8h_source.html#l00164">TW_LOC</a>, and <a class="el" href="ross-types_8h_source.html#l00316">tw_lp::type</a>.</p>

<p>Referenced by <a class="el" href="phold_8c_source.html#l00169">main()</a>, and <a class="el" href="analysis-lp_8c_source.html#l00300">st_analysis_lp_settype()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_a8ba3f617dbc434273f5ba44bf3132a6b_cgraph.png" border="0" usemap="#tw-lp_8c_a8ba3f617dbc434273f5ba44bf3132a6b_cgraph" alt=""/></div>
<map name="tw-lp_8c_a8ba3f617dbc434273f5ba44bf3132a6b_cgraph" id="tw-lp_8c_a8ba3f617dbc434273f5ba44bf3132a6b_cgraph">
<area shape="rect" id="node2" href="ross-extern_8h.html#a49ed2388aaae26e43280b7909c834aaa" title="tw_error" alt="" coords="157,5,227,32"/><area shape="rect" id="node3" href="network-mpi_8c.html#a2e139e8547a091c4c4ea0b445fe8dd1c" title="tw_net_abort" alt="" coords="275,5,373,32"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_a8ba3f617dbc434273f5ba44bf3132a6b_icgraph.png" border="0" usemap="#tw-lp_8c_a8ba3f617dbc434273f5ba44bf3132a6b_icgraph" alt=""/></div>
<map name="tw-lp_8c_a8ba3f617dbc434273f5ba44bf3132a6b_icgraph" id="tw-lp_8c_a8ba3f617dbc434273f5ba44bf3132a6b_icgraph">
<area shape="rect" id="node2" href="phold_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title="main" alt="" coords="688,5,739,32"/><area shape="rect" id="node3" href="analysis-lp_8h.html#ab8d22436238dae63d882069cad4d637e" title="st_analysis_lp_settype" alt="" coords="157,32,312,59"/><area shape="rect" id="node4" href="st-instrumentation_8h.html#aa3965326e96c2b9e5aba87f35ed2a896" title="specialized_lp_init\l_mapping" alt="" coords="360,29,488,70"/><area shape="rect" id="node5" href="tw-setup_8c.html#ae29dd6eba29314361ef334f6bf028210" title="tw_define_lps" alt="" coords="537,32,639,59"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a7bd8e21f4093b87f54e5054d8a028c88"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void tw_lp_setup_types </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="tw-lp_8c_source.html#l00011">11</a> of file <a class="el" href="tw-lp_8c_source.html">tw-lp.c</a>.</p>

<p>References <a class="el" href="st-event-trace_8c_source.html#l00003">g_st_ev_trace</a>, <a class="el" href="ross-global_8c_source.html#l00026">g_tw_lp</a>, <a class="el" href="ross-global_8c_source.html#l00102">g_tw_lp_typemap</a>, <a class="el" href="ross-global_8c_source.html#l00101">g_tw_lp_types</a>, <a class="el" href="ross-global_8c_source.html#l00023">g_tw_nlp</a>, <a class="el" href="ross-types_8h_source.html#l00306">tw_lp::gid</a>, <a class="el" href="st-model-data_8c_source.html#l00010">st_model_setup_types()</a>, <a class="el" href="tw-util_8c_source.html#l00074">tw_error()</a>, <a class="el" href="ross-extern_8h_source.html#l00164">TW_LOC</a>, and <a class="el" href="ross-types_8h_source.html#l00316">tw_lp::type</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_a7bd8e21f4093b87f54e5054d8a028c88_cgraph.png" border="0" usemap="#tw-lp_8c_a7bd8e21f4093b87f54e5054d8a028c88_cgraph" alt=""/></div>
<map name="tw-lp_8c_a7bd8e21f4093b87f54e5054d8a028c88_cgraph" id="tw-lp_8c_a7bd8e21f4093b87f54e5054d8a028c88_cgraph">
<area shape="rect" id="node2" href="st-instrumentation_8h.html#a6c7477ccc6232c784f1eea41de549884" title="st_model_setup_types" alt="" coords="185,5,338,32"/><area shape="rect" id="node3" href="ross-extern_8h.html#a49ed2388aaae26e43280b7909c834aaa" title="tw_error" alt="" coords="227,56,296,83"/><area shape="rect" id="node4" href="network-mpi_8c.html#a2e139e8547a091c4c4ea0b445fe8dd1c" title="tw_net_abort" alt="" coords="387,56,485,83"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="ad229844ea59b6a3d9294f57bd2f99351"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void tw_lp_suspend </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structtw__lp.html">tw_lp</a> *&#160;</td>
          <td class="paramname"><em>lp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>do_orig_event_rc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>error_num</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>LP Suspension Design Notes! (John Jenkins, ANL)</p>
<p>Many times, when developing optimistic models, we are able to determine &lt; LP state, event &gt; pairs which represent infeasible model behavior. These types of simulation states typically arise when time warp causes us to receive and potentially process messages in an order we don't expect.</p>
<p>For example, consider a client/server protocol in which a server sends an ACK to a client upon completion of some event. In optimistic mode, the client can see what amounts to duplicate ACKs from the server due to the server LP rolling back and re-sending an ACK.</p>
<p>While some models can gracefully cope with such issues, more complex models can have troubles (the client in the example could for instance destroy the request metadata after receiving an ACK).</p>
<p>A solution, as noted in the "Dark Side of Risk" paper, is to introduce LP "self-suspend" functionality. If an LP is able to detect a &lt; state, message &gt; pair which is incorrect / unexpected in a well-behaved simulation, the LP should be able to put itself into suspend mode, refusing to process messages until rolled back to a pre &lt; state, message &gt; state. There are two benefits: 1) it greatly reduces the difficulty in tracking down and distinguishing proper model bugs from bugs arising from time-warp related issues such as out-of-order event receipt and 2) it improves simulation performance by pruning the number of processed events that we know are invalid and will be rolled back anyways.</p>
<p>I suggest the function signature tw_suspend(<a class="el" href="structtw__lp.html" title="LP State Structure. ">tw_lp</a> *lp, int do_suspend_event_rc, const char * format, ...), with the following semantics:</p>
<p>After a call to tw_suspend, all subsequent events (both forward and reverse) that arrive at the suspended LP shall be processed as if they were no-ops. The reverse event handler of the event that caused the suspend will be run if do_orig_event_rc is nonzero; otherwise, the reverse event handler shall additionally be a no-op. Typically, do_orig_event_rc == 0 is desired, as good coding practices for moderate-or-greater complexity simulations dictate state/event validation prior to modifying LP state (partial rollbacks are very undesirable), but there may be messy logic in the user code for which a partial rollback is warranted (operations that free memory as a side effect of operations, for example). An LP exits suspend state upon rolling back the event that caused the suspend (whether or not that event is processed as a no-op). Upon GVT, if an LP is in self-suspend mode and the event that caused the suspend has a timestamp less than that of GVT, then the simulator shall report the format string of suspended LP(s) and exit. A NULL format string is acceptable for performance purposes, e.g. when doing "production" simulation runs.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">lp</td><td>Pointer to the LP we're suspending </td></tr>
    <tr><td class="paramname">do_orig_event_rc</td><td>A bool indicating whether or not to skip the RC function </td></tr>
    <tr><td class="paramname">error_num</td><td>User-specified value for tracking purposes; ROSS ignores this </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tw-lp_8c_source.html#l00227">227</a> of file <a class="el" href="tw-lp_8c_source.html">tw-lp.c</a>.</p>

<p>References <a class="el" href="ross-types_8h_source.html#l00385">tw_pe::cur_event</a>, <a class="el" href="ross-types_8h_source.html#l00308">tw_lp::pe</a>, <a class="el" href="ross-types_8h_source.html#l00330">tw_lp::suspend_do_orig_event_rc</a>, <a class="el" href="ross-types_8h_source.html#l00329">tw_lp::suspend_error_number</a>, <a class="el" href="ross-types_8h_source.html#l00327">tw_lp::suspend_event</a>, <a class="el" href="ross-types_8h_source.html#l00331">tw_lp::suspend_flag</a>, <a class="el" href="ross-types_8h_source.html#l00328">tw_lp::suspend_time</a>, <a class="el" href="tw-util_8c_source.html#l00074">tw_error()</a>, <a class="el" href="ross-extern_8h_source.html#l00164">TW_LOC</a>, and <a class="el" href="ross-kernel-inline_8h_source.html#l00080">tw_now()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_ad229844ea59b6a3d9294f57bd2f99351_cgraph.png" border="0" usemap="#tw-lp_8c_ad229844ea59b6a3d9294f57bd2f99351_cgraph" alt=""/></div>
<map name="tw-lp_8c_ad229844ea59b6a3d9294f57bd2f99351_cgraph" id="tw-lp_8c_ad229844ea59b6a3d9294f57bd2f99351_cgraph">
<area shape="rect" id="node2" href="ross-extern_8h.html#a49ed2388aaae26e43280b7909c834aaa" title="tw_error" alt="" coords="163,5,232,32"/><area shape="rect" id="node4" href="ross-kernel-inline_8h.html#a543cb527662432d81f65c327e5e5f1b0" title="tw_now" alt="" coords="164,56,231,83"/><area shape="rect" id="node3" href="network-mpi_8c.html#a2e139e8547a091c4c4ea0b445fe8dd1c" title="tw_net_abort" alt="" coords="281,5,378,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="aab34bd3abe37a02c5a785eba6161d498"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void tw_pre_run_lps </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structtw__pe.html">tw_pe</a> *&#160;</td>
          <td class="paramname"><em>me</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="tw-lp_8c_source.html#l00147">147</a> of file <a class="el" href="tw-lp_8c_source.html">tw-lp.c</a>.</p>

<p>References <a class="el" href="ross-types_8h_source.html#l00384">tw_pe::abort_event</a>, <a class="el" href="ross-types_8h_source.html#l00261">tw_event::caused_by_me</a>, <a class="el" href="ross-types_8h_source.html#l00399">tw_pe::cev_abort</a>, <a class="el" href="ross-types_8h_source.html#l00385">tw_pe::cur_event</a>, <a class="el" href="ross-types_8h_source.html#l00315">tw_lp::cur_state</a>, <a class="el" href="specialized-lps_8c_source.html#l00012">g_st_analysis_nlp</a>, <a class="el" href="ross-global_8c_source.html#l00026">g_tw_lp</a>, <a class="el" href="ross-global_8c_source.html#l00023">g_tw_nlp</a>, <a class="el" href="ross-types_8h_source.html#l00308">tw_lp::pe</a>, <a class="el" href="ross-types_8h_source.html#l00089">tw_lptype::pre_run</a>, <a class="el" href="tw-util_8c_source.html#l00074">tw_error()</a>, <a class="el" href="ross-extern_8h_source.html#l00164">TW_LOC</a>, and <a class="el" href="ross-types_8h_source.html#l00316">tw_lp::type</a>.</p>

<p>Referenced by <a class="el" href="tw-sched_8c_source.html#l00404">tw_sched_init()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_aab34bd3abe37a02c5a785eba6161d498_cgraph.png" border="0" usemap="#tw-lp_8c_aab34bd3abe37a02c5a785eba6161d498_cgraph" alt=""/></div>
<map name="tw-lp_8c_aab34bd3abe37a02c5a785eba6161d498_cgraph" id="tw-lp_8c_aab34bd3abe37a02c5a785eba6161d498_cgraph">
<area shape="rect" id="node2" href="ross-extern_8h.html#a49ed2388aaae26e43280b7909c834aaa" title="tw_error" alt="" coords="165,5,235,32"/><area shape="rect" id="node3" href="network-mpi_8c.html#a2e139e8547a091c4c4ea0b445fe8dd1c" title="tw_net_abort" alt="" coords="283,5,381,32"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="tw-lp_8c_aab34bd3abe37a02c5a785eba6161d498_icgraph.png" border="0" usemap="#tw-lp_8c_aab34bd3abe37a02c5a785eba6161d498_icgraph" alt=""/></div>
<map name="tw-lp_8c_aab34bd3abe37a02c5a785eba6161d498_icgraph" id="tw-lp_8c_aab34bd3abe37a02c5a785eba6161d498_icgraph">
<area shape="rect" id="node2" href="tw-sched_8c.html#ae7357a99fcf58867f153cb7ab920b400" title="tw_sched_init" alt="" coords="166,5,269,32"/><area shape="rect" id="node3" href="tw-setup_8c.html#a6dbc4bba03285bb1b8a8a5464f0375ea" title="tw_run" alt="" coords="317,5,379,32"/><area shape="rect" id="node4" href="phold_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title="main" alt="" coords="427,5,477,32"/></map>
</div>
</p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>
